package com.binary.coder.gift.core.domain.invitation;

import com.binary.coder.gift.core.common.bean.PageBean;
import com.binary.coder.gift.core.domain.invitation.model.aggregate.HandleInvitationRecordAggregate;
import com.binary.coder.gift.core.domain.invitation.model.aggregate.InvitationCardAggregate;
import com.binary.coder.gift.core.domain.invitation.model.entity.InvitationRecordEntity;
import com.binary.coder.gift.core.interfaces.Invitation.dto.req.PageQueryInvitationCardReq;


/**
 * @author atao
 * @version 1.0.0
 * @ClassName InviatationService.java
 * @Description 请帖服务
 * @createTime 2024年06月21日 16:51:00
 */
public interface InvitationService {
    long saveInvitation(InvitationCardAggregate invitationCardAggregate);

    boolean checkPermission(long userId, long invitationCardId);

    boolean deleteInvitationCardById(long invitationCardId);

    PageBean<InvitationCardAggregate> pageQueryInvitationCard(PageQueryInvitationCardReq req);

    void saveInvitationRecord(InvitationRecordEntity entity);

    InvitationCardAggregate queryInvitationCard(Long invitationCardId);

    HandleInvitationRecordAggregate queryInvitationRecord(Long userId, Long invitationCardId);

    PageBean<HandleInvitationRecordAggregate> pageQueryInvitationRecord(long pageIndex, long pageSize, Long invitationId);
}
